package model.entidades;

import java.util.Calendar;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity 
@Table(name="agendamento", schema="public")
public class Agendamento {

	@Id
	@GeneratedValue
	private int id;
	
	@Column(nullable = false)
	@Temporal(TemporalType.DATE)
	private Calendar data;
	@Column(nullable = false)
	private int horario;
	@Column(nullable = false)
	private String tipo;
	@Column(nullable = false)
	private String status;
	
	@Column(columnDefinition="text")
	private String observacoes;
	
	@ManyToOne
	@JoinColumn( name = "id_paciente" )
	private Paciente paciente;
	
	@ManyToOne
	@JoinColumn( name = "id_profissional" )
	private Usuario profissional;
	
	@ManyToOne
	@JoinColumn( name = "id_convenio" )
	private Convenio convenio;
	
	@OneToOne(cascade = CascadeType.ALL)
	private Pagamento pagamento;

	/**
	 * 
	 */
	public Agendamento() {
		super();
	}

	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the data
	 */
	public Calendar getData() {
		return data;
	}

	/**
	 * @param data the data to set
	 */
	public void setData(Calendar data) {
		this.data = data;
	}

	/**
	 * @return the horario
	 */
	public int getHorario() {
		return horario;
	}

	/**
	 * @param horario the horario to set
	 */
	public void setHorario(int horario) {
		this.horario = horario;
	}

	/**
	 * @return the tipo
	 */
	public String getTipo() {
		return tipo;
	}

	/**
	 * @param tipo the tipo to set
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	/**
	 * @return the status
	 */
	public String getStatus() {
		return status;
	}

	/**
	 * @param status the status to set
	 */
	public void setStatus(String status) {
		this.status = status;
	}

	/**
	 * @return the observacoes
	 */
	public String getObservacoes() {
		return observacoes;
	}

	/**
	 * @param observacoes the observacoes to set
	 */
	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	/**
	 * @return the paciente
	 */
	public Paciente getPaciente() {
		return paciente;
	}

	/**
	 * @param paciente the paciente to set
	 */
	public void setPaciente(Paciente paciente) {
		this.paciente = paciente;
	}

	/**
	 * @return the profissional
	 */
	public Usuario getProfissional() {
		return profissional;
	}

	/**
	 * @param profissional the profissional to set
	 */
	public void setProfissional(Usuario profissional) {
		this.profissional = profissional;
	}

	/**
	 * @return the convenio
	 */
	public Convenio getConvenio() {
		return convenio;
	}

	/**
	 * @param convenio the convenio to set
	 */
	public void setConvenio(Convenio convenio) {
		this.convenio = convenio;
	}

	/**
	 * @return the pagamento
	 */
	public Pagamento getPagamento() {
		return pagamento;
	}

	/**
	 * @param pagamento the pagamento to set
	 */
	public void setPagamento(Pagamento pagamento) {
		this.pagamento = pagamento;
	}
	
	
}
